home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 3 / Gold Medal Software - Volume 3 (Gold Medal) (1994).iso / prog / dnalib59.arj / BROWSE.BAS < prev    next >
BASIC Source File  |  1994-01-29  |  6KB  |  202 lines

  1. DECLARE SUB Popwind(Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%)
  2. DECLARE SUB RestoreScreen(ScreenID$,TopRow%,LeftColumn%)
  3. DECLARE SUB SaveScreen(ScreenID$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%)
  4. DECLARE SUB SplitPath(FilePath$, Path$, FileName$)
  5. DECLARE SUB CalcByte(Attr%,LowByte%,HiByte%)
  6. DECLARE SUB Clicked(Rgt%,Lft%,Row%,Col%)
  7. DECLARE SUB HideCursor()
  8. DECLARE SUB ShowCursor()
  9. DECLARE FUNCTION LeftButtonReleased%()
  10.  
  11. SUB BROWSE(FileName$,Mouse%,TextColor%,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Attr%,Shadow%,Border%) PUBLIC
  12.  
  13. CalcByte Attr%,FGround%,BGround%
  14.  
  15. LeftSide% = LeftColumn% + 2:RightSide% = RightColumn% - 2:Top% = TopRow% + 1
  16. Bottom% = BottomRow% - 1:TextWidth% = RightSide% - (LeftSide% - 1):Pointer% = 1
  17. Offset% = 0
  18.  
  19. Test$ = DIR$(FileName$)
  20.  
  21. IF Mouse% THEN HideCursor
  22.  
  23. IF LEN(Test$) THEN
  24.   SplitPath FileName$,Path$,Title$
  25.   FileNumber% = FREEFILE
  26.   OPEN FileName$ FOR BINARY AS FileNumber%
  27.   IF LOF(FileNumber%) > 32000 THEN
  28.     GET$ FileNumber%, 32000, FileName$
  29.   ELSE
  30.     GET$ FileNumber%, LOF(FileNumber%), FileName$
  31.   END IF
  32.   CLOSE FileNumber%
  33. ELSE
  34.   EXIT SUB
  35. END IF
  36.  
  37. REPLACE ANY CHR$(9) WITH CHR$(32) IN FileName$
  38. FileName$ = RTRIM$(FileName$,CHR$(13,10))
  39. FileName$ = FileName$ + " "
  40.  
  41. IF LEN(Title$) >= TextWidth% - 6 THEN
  42.   Title$ = ""
  43. END IF
  44.  
  45. SaveScreen BrowseScreen$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%
  46.  
  47. Popwind Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%
  48.  
  49. IF Mouse% THEN
  50.   COLOR FGround%,BGround%
  51.   LOCATE BottomRow%,RightColumn% - 10
  52.   PRINT CHR$(91,17,32,30,32,31,32,16,93);
  53.   LOCATE TopRow%,LeftColumn% + 2
  54.   PRINT CHR$(91,254,93);
  55. END IF
  56.  
  57. COLOR TextColor%,BGround%
  58.  
  59. DO
  60.  
  61. IF Mouse% THEN HideCursor
  62.  
  63.     TempPointer% = Pointer%
  64.     Temp% = Top%
  65.     DO
  66.       EndOfLine% = INSTR(MID$(FileName$, TempPointer%),CHR$(13))
  67.       IF EndOfLine% = 0 THEN
  68.         EndOfLine% = LEN(FileName$)
  69.        ELSE
  70.         DECR EndOfLine%
  71.       END IF
  72.       CurrentLine$ = MID$(FileName$, TempPointer%, EndOfLine%)
  73.       LOCATE Temp%, LeftSide%
  74.       PRINT MID$(CurrentLine$ + SPACE$(TextWidth% + Offset%), 1 + Offset%, TextWidth%)
  75.       TempPointer% = INSTR(TempPointer%, FileName$, CHR$(13)) + 2 '+2 for CRLF pair
  76.       IF TempPointer% = 2 THEN TempPointer% = LEN(FileName$)
  77.       INCR Temp%
  78.       IF Temp% > Bottom% THEN EXIT LOOP
  79.     LOOP
  80.  
  81.  
  82.  
  83. WHILE NOT INSTAT
  84.   IF Mouse% THEN
  85.     ShowCursor
  86.     Rgt% = 0:Lft% = 0:MRow% = 0:MCol% = 0
  87.     Clicked Rgt%,Lft%,MRow%,MCol%
  88.     IF  MRow% >= TopRow% AND MRow% <= BottomRow% AND MCol% >= LeftColumn% AND MCol% <= RightColumn% THEN
  89.       SELECT CASE MRow%
  90.         CASE TopRow%
  91.           IF MCol% = LeftColumn% + 3 THEN
  92.             IF LeftButtonReleased% THEN Chose% = 27: GOTO KeyBoardRoutine
  93.           END IF
  94.         CASE BottomRow%
  95.           SELECT CASE MCol%
  96.             CASE RightColumn% - 3
  97.               IF Lft% THEN Chose% = -77: GOTO KeyBoardRoutine
  98.             CASE RightColumn% - 5
  99.               IF Lft% THEN Chose% = -80: GOTO KeyBoardRoutine
  100.             CASE RightColumn% - 7
  101.               IF Lft% THEN Chose% = -72: GOTO KeyBoardRoutine
  102.             CASE RightColumn% - 9
  103.               IF Lft% THEN Chose% = -75: GOTO KeyBoardRoutine
  104.           END SELECT
  105.       END SELECT
  106.     ELSE
  107.       IF LeftButtonReleased% THEN Chose% = 27: GOTO KeyBoardRoutine
  108.     END IF
  109.   END IF
  110. WEND
  111. Ky$ = INKEY$
  112.  
  113. IF LEN(Ky$) = 1 THEN
  114.   Chose% = ASC(Ky$)
  115. ELSE
  116.   Chose% = -ASC(RIGHT$(Ky$,1))
  117. END IF
  118.  
  119. KeyBoardRoutine:
  120.  
  121.   SELECT CASE Chose%
  122.  
  123.        CASE -80 'down arrow
  124.         IF TempPointer% < LEN(FileName$) THEN
  125.           Pointer% = INSTR(Pointer%, FileName$, CHR$(13)) + 2
  126.         END IF
  127.  
  128.        CASE -72 ' up arrow
  129.         IF Pointer% > 1 THEN
  130.           DECR Pointer%,2
  131.           DO
  132.             DECR Pointer%
  133.           LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
  134.           IF Pointer% > 1 THEN INCR Pointer%,2
  135.         END IF
  136.  
  137.        CASE -71 ' home
  138.         IF Offset% THEN
  139.           Offset% = 0
  140.         ELSE
  141.           Pointer% = 1
  142.         END IF
  143.  
  144.        CASE -77 ' right arrow
  145.         INCR Offset%
  146.  
  147.        CASE -75 ' left arrow
  148.         IF Offset% THEN DECR Offset%
  149.  
  150.        CASE -81 ' page down
  151.         FOR PageLenght% = Top% TO (Bottom% - 1)
  152.           Oldptr% = Pointer%
  153.           Pointer% = INSTR(Pointer%, FileName$, CHR$(13)) + 2
  154.           IF Pointer% = 2 THEN
  155.             Pointer% = Oldptr%
  156.             EXIT FOR
  157.           END IF
  158.         NEXT PageLenght%
  159.  
  160.        CASE -73 ' page up
  161.         FOR PageLenght% = Top% TO (Bottom% - 1)
  162.           IF Pointer% > 1 THEN
  163.             DECR Pointer%,2
  164.             DO
  165.               DECR Pointer%
  166.             LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
  167.             IF Pointer% > 1 THEN INCR Pointer%,2
  168.           ELSE
  169.             EXIT FOR
  170.           END IF
  171.         NEXT PageLenght%
  172.  
  173.        CASE -79  'EndKey
  174.          Pointer% = LEN(FileName$)
  175.          FOR PageLenght% = Top% TO (Bottom% - 1)
  176.           IF Pointer% > 1 THEN
  177.             DECR Pointer%,2
  178.             DO
  179.               DECR Pointer%
  180.             LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
  181.             IF Pointer% > 1 THEN INCR Pointer%,2
  182.           ELSE
  183.             EXIT FOR
  184.           END IF
  185.         NEXT PageLenght%
  186.  
  187.        CASE 27
  188.          EXIT LOOP
  189.  
  190.        CASE ELSE
  191.          BEEP
  192.  
  193.   END SELECT
  194.  
  195. LOOP
  196.  
  197. IF Mouse% THEN HideCursor
  198.  
  199. RestoreScreen BrowseScreen$,TopRow%,LeftColumn%
  200.  
  201. END SUB
  202.